library(Seurat)
library(scHolography)
scHolography.obj <-readRDS("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/scHolography.obj_new.rds")

spatial.neighbor.Dermal <- findSpatialNeighborhood(scHolography.obj ,annotationToUse = "celltype",query.cluster = c("Dermal"),orig.assay = "RNA")
Warning: Invalid name supplied, making object name syntactically valid. New object name is Seurat..SCTransform.RNA; see ?make.names for more details on syntax validity
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Centering and scaling data matrix

  |                                                                                                                                                
  |                                                                                                                                          |   0%
  |                                                                                                                                                
  |=====================================================================                                                                     |  50%
  |                                                                                                                                                
  |==========================================================================================================================================| 100%
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~00s          
  |+++                                               | 5 % ~00s          
  |+++                                               | 6 % ~00s          
  |++++                                              | 7 % ~00s          
  |+++++                                             | 8 % ~00s          
  |+++++                                             | 9 % ~00s          
  |++++++                                            | 10% ~00s          
  |++++++                                            | 12% ~00s          
  |+++++++                                           | 13% ~00s          
  |+++++++                                           | 14% ~00s          
  |++++++++                                          | 15% ~00s          
  |+++++++++                                         | 16% ~00s          
  |+++++++++                                         | 17% ~00s          
  |++++++++++                                        | 19% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |+++++++++++++                                     | 24% ~00s          
  |+++++++++++++                                     | 26% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |++++++++++++++                                    | 28% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++                                  | 30% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++                                 | 34% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++                               | 37% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |++++++++++++++++++++++++                          | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |+++++++++++++++++++++++++++                       | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |+++++++++++++++++++++++++++++++                   | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |++++++++++++++++++++++++++++++++++                | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~01s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 7 % ~01s          
  |++++                                              | 8 % ~01s          
  |+++++                                             | 9 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |++++++++                                          | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |+++++++++++                                       | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |++++++++++++                                      | 24% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |++++++++++++++                                    | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |+++++++++++++++                                   | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 30% ~01s          
  |++++++++++++++++                                  | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |+++++++++++++++++                                 | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |++++++++++++++++++                                | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |+++++++++++++++++++++++                           | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |++++++++++++++++++++++++++++++++++                | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~00s          
  |++                                                | 3 % ~00s          
  |+++                                               | 4 % ~00s          
  |+++                                               | 6 % ~00s          
  |++++                                              | 7 % ~00s          
  |+++++                                             | 8 % ~00s          
  |+++++                                             | 10% ~00s          
  |++++++                                            | 11% ~00s          
  |+++++++                                           | 13% ~00s          
  |++++++++                                          | 14% ~00s          
  |++++++++                                          | 15% ~00s          
  |+++++++++                                         | 17% ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++                                      | 24% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++                                   | 28% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |+++++++++++++++++                                 | 32% ~00s          
  |+++++++++++++++++                                 | 34% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |+++++++++++++++++++                               | 37% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |++++++++++++++++++++++                            | 42% ~00s          
  |++++++++++++++++++++++                            | 44% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |++++++++++++++++++++++++                          | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |+++++++++++++++++++++++++++                       | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |+++++++++++++++++++++++++++++                     | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |++++++++++++++++++++++++++++++++++                | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~01s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 8 % ~01s          
  |+++++                                             | 9 % ~01s          
  |++++++                                            | 11% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |+++++++                                           | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |++++++++                                          | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |+++++++++                                         | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |++++++++++                                        | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 23% ~00s          
  |+++++++++++++                                     | 24% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |++++++++++++++                                    | 26% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++                                   | 28% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++                                  | 32% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++                                 | 34% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |+++++++++++++++++++                               | 37% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |++++++++++++++++++++++                            | 42% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++                         | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |++++++++++++++++++++++++++                        | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++                     | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |++++++++++++++++++++++++++++++++++                | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Only one SCT model is stored - skipping recalculating corrected counts
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~34s          
  |++                                                | 2 % ~33s          
  |++                                                | 3 % ~33s          
  |+++                                               | 4 % ~33s          
  |+++                                               | 5 % ~35s          
  |++++                                              | 6 % ~34s          
  |++++                                              | 7 % ~34s          
  |+++++                                             | 8 % ~33s          
  |+++++                                             | 9 % ~32s          
  |++++++                                            | 10% ~32s          
  |++++++                                            | 11% ~32s          
  |+++++++                                           | 12% ~31s          
  |+++++++                                           | 13% ~31s          
  |++++++++                                          | 14% ~30s          
  |++++++++                                          | 15% ~30s          
  |+++++++++                                         | 16% ~29s          
  |+++++++++                                         | 17% ~29s          
  |++++++++++                                        | 18% ~28s          
  |++++++++++                                        | 19% ~28s          
  |+++++++++++                                       | 20% ~28s          
  |+++++++++++                                       | 21% ~27s          
  |++++++++++++                                      | 22% ~27s          
  |++++++++++++                                      | 23% ~27s          
  |+++++++++++++                                     | 24% ~26s          
  |+++++++++++++                                     | 26% ~26s          
  |++++++++++++++                                    | 27% ~25s          
  |++++++++++++++                                    | 28% ~25s          
  |+++++++++++++++                                   | 29% ~25s          
  |+++++++++++++++                                   | 30% ~24s          
  |++++++++++++++++                                  | 31% ~24s          
  |++++++++++++++++                                  | 32% ~24s          
  |+++++++++++++++++                                 | 33% ~23s          
  |+++++++++++++++++                                 | 34% ~23s          
  |++++++++++++++++++                                | 35% ~23s          
  |++++++++++++++++++                                | 36% ~22s          
  |+++++++++++++++++++                               | 37% ~22s          
  |+++++++++++++++++++                               | 38% ~21s          
  |++++++++++++++++++++                              | 39% ~21s          
  |++++++++++++++++++++                              | 40% ~21s          
  |+++++++++++++++++++++                             | 41% ~20s          
  |+++++++++++++++++++++                             | 42% ~20s          
  |++++++++++++++++++++++                            | 43% ~20s          
  |++++++++++++++++++++++                            | 44% ~19s          
  |+++++++++++++++++++++++                           | 45% ~19s          
  |+++++++++++++++++++++++                           | 46% ~19s          
  |++++++++++++++++++++++++                          | 47% ~18s          
  |++++++++++++++++++++++++                          | 48% ~18s          
  |+++++++++++++++++++++++++                         | 49% ~18s          
  |+++++++++++++++++++++++++                         | 50% ~17s          
  |++++++++++++++++++++++++++                        | 51% ~17s          
  |+++++++++++++++++++++++++++                       | 52% ~16s          
  |+++++++++++++++++++++++++++                       | 53% ~16s          
  |++++++++++++++++++++++++++++                      | 54% ~16s          
  |++++++++++++++++++++++++++++                      | 55% ~15s          
  |+++++++++++++++++++++++++++++                     | 56% ~15s          
  |+++++++++++++++++++++++++++++                     | 57% ~15s          
  |++++++++++++++++++++++++++++++                    | 58% ~14s          
  |++++++++++++++++++++++++++++++                    | 59% ~14s          
  |+++++++++++++++++++++++++++++++                   | 60% ~14s          
  |+++++++++++++++++++++++++++++++                   | 61% ~13s          
  |++++++++++++++++++++++++++++++++                  | 62% ~13s          
  |++++++++++++++++++++++++++++++++                  | 63% ~13s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~12s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~12s          
  |++++++++++++++++++++++++++++++++++                | 66% ~12s          
  |++++++++++++++++++++++++++++++++++                | 67% ~11s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~11s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~10s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~10s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~10s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~09s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~09s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~09s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~08s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~08s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~08s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~07s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~07s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~07s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~06s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~06s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~06s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=34s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~10s          
  |+                                                 | 2 % ~10s          
  |++                                                | 3 % ~10s          
  |++                                                | 4 % ~10s          
  |+++                                               | 5 % ~10s          
  |+++                                               | 6 % ~10s          
  |++++                                              | 7 % ~10s          
  |++++                                              | 8 % ~10s          
  |+++++                                             | 9 % ~09s          
  |+++++                                             | 10% ~09s          
  |++++++                                            | 11% ~09s          
  |++++++                                            | 12% ~09s          
  |+++++++                                           | 13% ~09s          
  |+++++++                                           | 14% ~09s          
  |++++++++                                          | 15% ~09s          
  |++++++++                                          | 16% ~09s          
  |+++++++++                                         | 17% ~09s          
  |+++++++++                                         | 18% ~08s          
  |++++++++++                                        | 19% ~08s          
  |++++++++++                                        | 20% ~08s          
  |+++++++++++                                       | 21% ~08s          
  |+++++++++++                                       | 22% ~08s          
  |++++++++++++                                      | 23% ~08s          
  |++++++++++++                                      | 24% ~08s          
  |+++++++++++++                                     | 25% ~08s          
  |+++++++++++++                                     | 26% ~08s          
  |++++++++++++++                                    | 27% ~08s          
  |++++++++++++++                                    | 28% ~07s          
  |+++++++++++++++                                   | 29% ~07s          
  |+++++++++++++++                                   | 30% ~07s          
  |++++++++++++++++                                  | 31% ~07s          
  |++++++++++++++++                                  | 32% ~07s          
  |+++++++++++++++++                                 | 33% ~07s          
  |+++++++++++++++++                                 | 34% ~07s          
  |++++++++++++++++++                                | 35% ~07s          
  |++++++++++++++++++                                | 36% ~07s          
  |+++++++++++++++++++                               | 37% ~07s          
  |+++++++++++++++++++                               | 38% ~06s          
  |++++++++++++++++++++                              | 39% ~06s          
  |++++++++++++++++++++                              | 40% ~06s          
  |+++++++++++++++++++++                             | 41% ~06s          
  |+++++++++++++++++++++                             | 42% ~06s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |++++++++++++++++++++++                            | 44% ~06s          
  |+++++++++++++++++++++++                           | 45% ~06s          
  |+++++++++++++++++++++++                           | 46% ~06s          
  |++++++++++++++++++++++++                          | 47% ~06s          
  |++++++++++++++++++++++++                          | 48% ~06s          
  |+++++++++++++++++++++++++                         | 49% ~05s          
  |+++++++++++++++++++++++++                         | 50% ~05s          
  |++++++++++++++++++++++++++                        | 51% ~05s          
  |++++++++++++++++++++++++++                        | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 53% ~05s          
  |+++++++++++++++++++++++++++                       | 54% ~05s          
  |++++++++++++++++++++++++++++                      | 55% ~05s          
  |++++++++++++++++++++++++++++                      | 56% ~05s          
  |+++++++++++++++++++++++++++++                     | 57% ~05s          
  |+++++++++++++++++++++++++++++                     | 58% ~04s          
  |++++++++++++++++++++++++++++++                    | 59% ~04s          
  |++++++++++++++++++++++++++++++                    | 60% ~04s          
  |+++++++++++++++++++++++++++++++                   | 61% ~04s          
  |+++++++++++++++++++++++++++++++                   | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 63% ~04s          
  |++++++++++++++++++++++++++++++++                  | 64% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~04s          
  |++++++++++++++++++++++++++++++++++                | 67% ~03s          
  |++++++++++++++++++++++++++++++++++                | 68% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=10s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~14s          
  |+                                                 | 2 % ~14s          
  |++                                                | 3 % ~14s          
  |++                                                | 4 % ~14s          
  |+++                                               | 5 % ~14s          
  |+++                                               | 6 % ~14s          
  |++++                                              | 7 % ~14s          
  |++++                                              | 8 % ~13s          
  |+++++                                             | 9 % ~13s          
  |+++++                                             | 10% ~13s          
  |++++++                                            | 11% ~13s          
  |++++++                                            | 12% ~13s          
  |+++++++                                           | 13% ~13s          
  |+++++++                                           | 14% ~13s          
  |++++++++                                          | 15% ~12s          
  |++++++++                                          | 16% ~12s          
  |+++++++++                                         | 17% ~12s          
  |+++++++++                                         | 18% ~12s          
  |++++++++++                                        | 19% ~12s          
  |++++++++++                                        | 20% ~12s          
  |+++++++++++                                       | 21% ~12s          
  |+++++++++++                                       | 22% ~11s          
  |++++++++++++                                      | 23% ~11s          
  |++++++++++++                                      | 24% ~11s          
  |+++++++++++++                                     | 25% ~11s          
  |+++++++++++++                                     | 26% ~11s          
  |++++++++++++++                                    | 27% ~11s          
  |++++++++++++++                                    | 28% ~11s          
  |+++++++++++++++                                   | 29% ~10s          
  |+++++++++++++++                                   | 30% ~10s          
  |++++++++++++++++                                  | 31% ~10s          
  |++++++++++++++++                                  | 32% ~10s          
  |+++++++++++++++++                                 | 33% ~10s          
  |+++++++++++++++++                                 | 34% ~10s          
  |++++++++++++++++++                                | 35% ~10s          
  |++++++++++++++++++                                | 36% ~09s          
  |+++++++++++++++++++                               | 37% ~09s          
  |+++++++++++++++++++                               | 38% ~09s          
  |++++++++++++++++++++                              | 39% ~09s          
  |++++++++++++++++++++                              | 40% ~09s          
  |+++++++++++++++++++++                             | 41% ~09s          
  |+++++++++++++++++++++                             | 42% ~08s          
  |++++++++++++++++++++++                            | 43% ~08s          
  |++++++++++++++++++++++                            | 44% ~08s          
  |+++++++++++++++++++++++                           | 45% ~08s          
  |+++++++++++++++++++++++                           | 46% ~08s          
  |++++++++++++++++++++++++                          | 47% ~08s          
  |++++++++++++++++++++++++                          | 48% ~08s          
  |+++++++++++++++++++++++++                         | 49% ~07s          
  |+++++++++++++++++++++++++                         | 50% ~07s          
  |++++++++++++++++++++++++++                        | 51% ~07s          
  |++++++++++++++++++++++++++                        | 52% ~07s          
  |+++++++++++++++++++++++++++                       | 53% ~07s          
  |+++++++++++++++++++++++++++                       | 54% ~07s          
  |++++++++++++++++++++++++++++                      | 55% ~07s          
  |++++++++++++++++++++++++++++                      | 56% ~06s          
  |+++++++++++++++++++++++++++++                     | 57% ~06s          
  |+++++++++++++++++++++++++++++                     | 58% ~06s          
  |++++++++++++++++++++++++++++++                    | 59% ~06s          
  |++++++++++++++++++++++++++++++                    | 60% ~06s          
  |+++++++++++++++++++++++++++++++                   | 61% ~06s          
  |+++++++++++++++++++++++++++++++                   | 62% ~06s          
  |++++++++++++++++++++++++++++++++                  | 63% ~05s          
  |++++++++++++++++++++++++++++++++                  | 64% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~05s          
  |++++++++++++++++++++++++++++++++++                | 67% ~05s          
  |++++++++++++++++++++++++++++++++++                | 68% ~05s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~05s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~04s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=15s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~17s          
  |++                                                | 2 % ~17s          
  |++                                                | 3 % ~16s          
  |+++                                               | 4 % ~16s          
  |+++                                               | 5 % ~16s          
  |++++                                              | 6 % ~16s          
  |++++                                              | 7 % ~16s          
  |+++++                                             | 8 % ~16s          
  |+++++                                             | 9 % ~15s          
  |++++++                                            | 10% ~15s          
  |++++++                                            | 11% ~15s          
  |+++++++                                           | 12% ~15s          
  |+++++++                                           | 13% ~15s          
  |++++++++                                          | 14% ~15s          
  |++++++++                                          | 15% ~14s          
  |+++++++++                                         | 16% ~14s          
  |+++++++++                                         | 17% ~14s          
  |++++++++++                                        | 18% ~14s          
  |++++++++++                                        | 19% ~14s          
  |+++++++++++                                       | 20% ~14s          
  |+++++++++++                                       | 21% ~13s          
  |++++++++++++                                      | 22% ~13s          
  |++++++++++++                                      | 23% ~13s          
  |+++++++++++++                                     | 24% ~13s          
  |+++++++++++++                                     | 26% ~13s          
  |++++++++++++++                                    | 27% ~13s          
  |++++++++++++++                                    | 28% ~12s          
  |+++++++++++++++                                   | 29% ~12s          
  |+++++++++++++++                                   | 30% ~12s          
  |++++++++++++++++                                  | 31% ~12s          
  |++++++++++++++++                                  | 32% ~12s          
  |+++++++++++++++++                                 | 33% ~11s          
  |+++++++++++++++++                                 | 34% ~11s          
  |++++++++++++++++++                                | 35% ~11s          
  |++++++++++++++++++                                | 36% ~11s          
  |+++++++++++++++++++                               | 37% ~11s          
  |+++++++++++++++++++                               | 38% ~11s          
  |++++++++++++++++++++                              | 39% ~10s          
  |++++++++++++++++++++                              | 40% ~10s          
  |+++++++++++++++++++++                             | 41% ~10s          
  |+++++++++++++++++++++                             | 42% ~10s          
  |++++++++++++++++++++++                            | 43% ~10s          
  |++++++++++++++++++++++                            | 44% ~10s          
  |+++++++++++++++++++++++                           | 45% ~10s          
  |+++++++++++++++++++++++                           | 46% ~09s          
  |++++++++++++++++++++++++                          | 47% ~09s          
  |++++++++++++++++++++++++                          | 48% ~09s          
  |+++++++++++++++++++++++++                         | 49% ~09s          
  |+++++++++++++++++++++++++                         | 50% ~09s          
  |++++++++++++++++++++++++++                        | 51% ~08s          
  |+++++++++++++++++++++++++++                       | 52% ~08s          
  |+++++++++++++++++++++++++++                       | 53% ~08s          
  |++++++++++++++++++++++++++++                      | 54% ~08s          
  |++++++++++++++++++++++++++++                      | 55% ~08s          
  |+++++++++++++++++++++++++++++                     | 56% ~08s          
  |+++++++++++++++++++++++++++++                     | 57% ~07s          
  |++++++++++++++++++++++++++++++                    | 58% ~07s          
  |++++++++++++++++++++++++++++++                    | 59% ~07s          
  |+++++++++++++++++++++++++++++++                   | 60% ~07s          
  |+++++++++++++++++++++++++++++++                   | 61% ~07s          
  |++++++++++++++++++++++++++++++++                  | 62% ~07s          
  |++++++++++++++++++++++++++++++++                  | 63% ~06s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~06s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~06s          
  |++++++++++++++++++++++++++++++++++                | 66% ~06s          
  |++++++++++++++++++++++++++++++++++                | 67% ~06s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~05s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~05s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~05s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~05s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~05s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~05s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~04s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~04s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~04s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~04s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=17s  

spatial.neighbor.Dermal$neighbor.marker %>%
  group_by(cluster) %>%
  top_n(n = 10, wt = avg_log2FC) -> top10
DoHeatmap(spatial.neighbor.Dermal$bulk.count.obj,assay = "SCT", features = top10$gene) + NoLegend()+viridis::scale_fill_viridis()
Scale for fill is already present.
Adding another scale for fill, which will replace the existing scale.

spatial.neighbor.Dermal$sc.marker %>%
  group_by(cluster) %>%
  top_n(n = 10, wt = avg_log2FC) -> top10b
DoHeatmap(spatial.neighbor.Dermal$query.only.obj$scHolography.sc,assay = "SCT", features = top10b$gene,group.by = "spatial.neighborhood") + NoLegend()+viridis::scale_fill_viridis()
Warning: The following features were omitted as they were not found in the scale.data slot for the SCT assay: MYH11, ADH1B, MESTScale for fill is already present.
Adding another scale for fill, which will replace the existing scale.

library(RColorBrewer)

fib.sp.col <-  c(c(colorRampPalette(brewer.pal(12,"Paired"))(10)[1],(brewer.pal(4,"Greens"))),colorRampPalette(brewer.pal(12,"Paired"))(10)[c(2,4:10)])


scene = list(camera = list(eye = list(x = -1, z = 0, y = 2)))
library(ggplot2)
tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/Fib.spatial.neighbor.heatmap.tiff", units="in", width=8, height=9, res=300)
DoHeatmap(spatial.neighbor.Dermal$bulk.count.obj,assay = "SCT", features = top10$gene,group.colors = brewer.pal(4,"Greens")) + NoLegend()+viridis::scale_fill_viridis()+theme(axis.text = element_text(size = 16,face = "bold"))
dev.off()
library(RColorBrewer)
scene = list(camera = list(eye = list(x = -1, z = 0, y = 2)))

fib1 <- scHolography::scHolographyPlot(spatial.neighbor.Dermal$scHolography.obj,color.by = "spatial.neighborhood",color = fib.sp.col,cells = which(spatial.neighbor.Dermal$scHolography.obj$scHolography.sc$celltype%in%c("Basal","Dermal","Endothelial","Smooth Muscle")))%>% plotly::layout(scene = scene)
plotly::orca(fib1, "3d.fib.svg",width = 7,height = 5)

fib1
fib1234 <- spatial.neighbor.Dermal$query.only.obj$scHolography.sc
fib1234$spatial.neighborhood <-paste0("Dermal_",fib1234$spatial.neighborhood)
fib1234$spatial.neighborhood <- factor(fib1234$spatial.neighborhood ,levels = sort(unique(fib1234$spatial.neighborhood )))
fib1234 <- SetIdent(fib1234,value ="spatial.neighborhood")

tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/Fib.peri.vln.mark.plot.tiff", units="in", width=5, height=5, res=300)
VlnPlot(fib1234,c("RGS5","NOTCH3","MYH11","ACTA2"),assay = "SCT",ncol = 2,cols = (brewer.pal(4,"Greens")))
dev.off()

tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/Fib.1234.col.vln.mark.plot.tiff", units="in", width=5, height=2.5, res=300)
VlnPlot(fib1234,c("COL1A2","DCN"),assay = "SCT",ncol = 2,cols = (brewer.pal(4,"Greens")))
dev.off()
tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/Fib.1234.four.stack.vln.mark.plot.tiff", units="in", width=5, height=6, res=600)
VlnPlot(fib1234,c("APCDD1","TWIST2","ADH1B","GREM1","ABCA8","IGF1","RGS5","NOTCH3"),assay = "SCT",stack = T,flip = T)+NoLegend()+theme(axis.text = element_text(size = 16,face = "bold"),axis.title.x = element_blank(),axis.title.y = element_text(size = 16,face = "bold") ,axis.text.x = element_text(angle = 30,hjust=1))+scale_fill_manual(values = c("#EDF8E9","#EDF8E9", "#BAE4B3" ,"#BAE4B3" ,"#74C476","#74C476", "#238B45", "#238B45"))
dev.off()
tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_3rdDraft//clusterDist.Fib1.2.3.4.to.4_rev.tiff", units="in", width=5, height=5, res=600)
scHolography::clusterDistanceBoxplot(spatial.neighbor.Dermal$scHolography.obj,annotationToUse = "spatial.neighborhood",query.cluster.list = (paste0("Dermal_",c(1:4))),reference.cluster = c("Dermal_4"))+ggplot2::scale_fill_manual(values = (brewer.pal(4,"Greens"))[1:4])+ 
  geom_signif(comparisons = my_comparisons,test.args = list(size=5),map_signif_level = TRUE)+NoLegend()+theme(axis.text = element_text(size = 16,face = "bold"),axis.title.x = element_blank(),axis.title.y = element_text(size = 20,face = "bold") ,axis.text.x = element_text(angle = 45,hjust=1))+ylab("SMN Distance")
Scale for fill is already present.
Adding another scale for fill, which will replace the existing scale.
dev.off()
null device 
          1 
dyn.fib <-findGeneSpatialDynamics(spatial.neighbor.Dermal$scHolography.obj,query.cluster = paste0("Dermal_",c(1:3)),ref.cluster = c("Smooth Muscle"),annotationToUse = "spatial.neighborhood",assayToUse = "SCT")
spatialDynamicsFeaturePlot(spatial.neighbor.Dermal$scHolography.obj,query.cluster = paste0("Dermal_",c(1:3)),ref.cluster = c("Smooth Muscle"),annotationToUse = "spatial.neighborhood",geneOI = c(head(dyn.fib)$gene,tail(dyn.fib)$gene),assayToUse = "SCT")

tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/Fib.spatial.neighbor.1-4.dyn.heat.tiff", units="in", width=12, height=8, res=300)
spatialDynamicsFeaturePlot(spatial.neighbor.Dermal$scHolography.obj,query.cluster=paste0("Dermal_",1:4),ref.cluster = c("Dermal_4"),annotationToUse = "spatial.neighborhood",geneOI = c("APCDD1","TWIST2","WNT5A","POSTN","SFRP2","GREM1","ADH1B","IGF1","ABCA8","CXCL12","MFAP5","RGS5","NOTCH3","ACTA2","MYH11"),assayToUse = "SCT",self.color = c((colorRampPalette(brewer.pal(12,"Paired"))(10)[1]),(brewer.pal(4,"Greens")),(colorRampPalette(brewer.pal(12,"Paired"))(10)[3:10])))
dev.off()
tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/Fib.spatial.neighbor.distal.col6a5.tiff", units="in", width=5, height=4, res=300)
expressionByDistPlot(spatial.neighbor.Dermal$scHolography.obj,query.cluster=paste0("Dermal_",1:3),ref.cluster = c("Smooth Muscle"),annotationToUse = "spatial.neighborhood",geneOI = "COL6A5",assayToUse = "SCT")
dev.off()

tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin/Fib.spatial.neighbor.proximal.mfap5.tiff", units="in", width=5, height=4, res=300)
expressionByDistPlot(spatial.neighbor.Dermal$scHolography.obj,query.cluster=paste0("Dermal_",1:3),ref.cluster = c("Smooth Muscle"),annotationToUse = "spatial.neighborhood",geneOI = "MFAP5",assayToUse = "SCT")
dev.off()
fib.sub <- spatial.neighbor.Dermal$scHolography.obj$scHolography.sc

tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin//dermal.spatial.cluster.tiff", units="in", width=4, height=4, res=300)
DimPlot(fib.sub,group.by = "spatial.neighborhood",reduction = "ind.umap",cells = which(fib.sub$celltype%in%"Dermal"))+ggtitle("Spatial Neighborhoods")+scale_colour_manual(values = brewer.pal(4,"Greens"))+NoLegend()
dev.off()

tiff("~/OneDrive - Northwestern University/Northwestern/Yi Lab/Manuscript/Code_2ndDraft/Human Skin//dermal.seurat.cluster.tiff", units="in", width=4, height=4, res=300)
DimPlot(fib.sub,group.by = "orig.cluster",reduction = "ind.umap",cells = which(fib.sub$celltype%in%"Dermal"))+ggtitle("Seurat Cluster")+scale_color_brewer(palette = "Set1")+NoLegend()
dev.off()
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KHNjSG9sb2dyYXBoeSkKc2NIb2xvZ3JhcGh5Lm9iaiA8LXJlYWRSRFMoIn4vT25lRHJpdmUgLSBOb3J0aHdlc3Rlcm4gVW5pdmVyc2l0eS9Ob3J0aHdlc3Rlcm4vWWkgTGFiL01hbnVzY3JpcHQvQ29kZV8ybmREcmFmdC9IdW1hbiBTa2luL3NjSG9sb2dyYXBoeS5vYmpfbmV3LnJkcyIpCgpgYGAKCmBgYHtyfQoKc3BhdGlhbC5uZWlnaGJvci5EZXJtYWwgPC0gZmluZFNwYXRpYWxOZWlnaGJvcmhvb2Qoc2NIb2xvZ3JhcGh5Lm9iaiAsYW5ub3RhdGlvblRvVXNlID0gImNlbGx0eXBlIixxdWVyeS5jbHVzdGVyID0gYygiRGVybWFsIiksb3JpZy5hc3NheSA9ICJSTkEiKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KFNldXJhdCkKCnNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmokc2NIb2xvZ3JhcGh5LnNjJHNwYXRpYWwubmVpZ2hib3Job29kW3doaWNoKHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmokc2NIb2xvZ3JhcGh5LnNjJHNwYXRpYWwubmVpZ2hib3Job29kJWluJWMoYXMuY2hhcmFjdGVyKDE6NCkpKV0gPC0gcGFzdGUwKCJEZXJtYWxfIixzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqJHNjSG9sb2dyYXBoeS5zYyRzcGF0aWFsLm5laWdoYm9yaG9vZFt3aGljaChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqJHNjSG9sb2dyYXBoeS5zYyRzcGF0aWFsLm5laWdoYm9yaG9vZCVpbiVjKGFzLmNoYXJhY3RlcigxOjQpKSldKQoKZmliLnNwLmNvbCA8LSAgYyhjKGNvbG9yUmFtcFBhbGV0dGUoUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKDEyLCJQYWlyZWQiKSkoMTApWzFdLChSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwoNCwiR3JlZW5zIikpKSxjb2xvclJhbXBQYWxldHRlKFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbCgxMiwiUGFpcmVkIikpKDEwKVtjKDIsNDoxMCldKQpuZWlnaGJvci5jb21wIDwtIHNjSG9sb2dyYXBoeTo6c2NIb2xvZ3JhcGh5TmVpZ2hib3JDb21wUGxvdChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqLGFubm90YXRpb25Ub1VzZSA9ICJzcGF0aWFsLm5laWdoYm9yaG9vZCIscXVlcnkuY2x1c3RlciA9IHBhc3RlMCgiRGVybWFsXyIsMTo0KSxjb2xvciA9IGZpYi5zcC5jb2wpCmxpYnJhcnkoZ2dwbG90MikKdGlmZigifi9PbmVEcml2ZSAtIE5vcnRod2VzdGVybiBVbml2ZXJzaXR5L05vcnRod2VzdGVybi9ZaSBMYWIvTWFudXNjcmlwdC9Db2RlXzJuZERyYWZ0L0h1bWFuIFNraW4vRmliLnNwYXRpYWwubmVpZ2hib3IuY29tcC50aWZmIiwgdW5pdHM9ImluIiwgd2lkdGg9NSwgaGVpZ2h0PTYsIHJlcz02MDApCm5laWdoYm9yLmNvbXAkbmVpZ2hib3IuY29tcC5wbG90K3RoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYsZmFjZSA9ICJib2xkIiksYXhpcy50aXRsZS54ID0gZWxlbWVudF9ibGFuaygpLGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjAsZmFjZSA9ICJib2xkIikgLGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMzAsaGp1c3Q9MSkpK05vTGVnZW5kKCkKZGV2Lm9mZigpCgpgYGAKCmBgYHtyfQpzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRuZWlnaGJvci5tYXJrZXIgJT4lCiAgZ3JvdXBfYnkoY2x1c3RlcikgJT4lCiAgdG9wX24obiA9IDEwLCB3dCA9IGF2Z19sb2cyRkMpIC0+IHRvcDEwCkRvSGVhdG1hcChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRidWxrLmNvdW50Lm9iaixhc3NheSA9ICJTQ1QiLCBmZWF0dXJlcyA9IHRvcDEwJGdlbmUpICsgTm9MZWdlbmQoKSt2aXJpZGlzOjpzY2FsZV9maWxsX3ZpcmlkaXMoKQpzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzYy5tYXJrZXIgJT4lCiAgZ3JvdXBfYnkoY2x1c3RlcikgJT4lCiAgdG9wX24obiA9IDEwLCB3dCA9IGF2Z19sb2cyRkMpIC0+IHRvcDEwYgpEb0hlYXRtYXAoc3BhdGlhbC5uZWlnaGJvci5EZXJtYWwkcXVlcnkub25seS5vYmokc2NIb2xvZ3JhcGh5LnNjLGFzc2F5ID0gIlNDVCIsIGZlYXR1cmVzID0gdG9wMTBiJGdlbmUsZ3JvdXAuYnkgPSAic3BhdGlhbC5uZWlnaGJvcmhvb2QiKSArIE5vTGVnZW5kKCkrdmlyaWRpczo6c2NhbGVfZmlsbF92aXJpZGlzKCkKbGlicmFyeShSQ29sb3JCcmV3ZXIpCgpmaWIuc3AuY29sIDwtICBjKGMoY29sb3JSYW1wUGFsZXR0ZShicmV3ZXIucGFsKDEyLCJQYWlyZWQiKSkoMTApWzFdLChicmV3ZXIucGFsKDQsIkdyZWVucyIpKSksY29sb3JSYW1wUGFsZXR0ZShicmV3ZXIucGFsKDEyLCJQYWlyZWQiKSkoMTApW2MoMiw0OjEwKV0pCgoKc2NlbmUgPSBsaXN0KGNhbWVyYSA9IGxpc3QoZXllID0gbGlzdCh4ID0gLTEsIHogPSAwLCB5ID0gMikpKQoKZmlnMSA8LSBzY0hvbG9ncmFwaHk6OnNjSG9sb2dyYXBoeVBsb3Qoc3BhdGlhbC5uZWlnaGJvci5EZXJtYWwkc2NIb2xvZ3JhcGh5Lm9iaixjb2xvci5ieSA9ICJzcGF0aWFsLm5laWdoYm9yaG9vZCIsY29sb3IgPSBmaWIuc3AuY29sKSU+JSBwbG90bHk6OmxheW91dChzY2VuZSA9IHNjZW5lKQpwbG90bHk6Om9yY2EoZmlnMSwgIjNkLmZpYi5hbGwuY2VsbHR5cGUuc3ZnIix3aWR0aCA9IDcsaGVpZ2h0ID0gNSkKCmZpZzIgPC0gc2NIb2xvZ3JhcGh5OjpzY0hvbG9ncmFwaHlQbG90KHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmosY29sb3IuYnkgPSAic3BhdGlhbC5uZWlnaGJvcmhvb2QiLGNvbG9yID0gZmliLnNwLmNvbCwgY2VsbHMgPSB3aGljaChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqJHNjSG9sb2dyYXBoeS5zYyRjZWxsdHlwZSVpbiVjKCJCYXNhbCIsIkRlcm1hbCIsIlNtb290aCBNdXNjbGUiKSkpJT4lIHBsb3RseTo6bGF5b3V0KHNjZW5lID0gc2NlbmUpCnBsb3RseTo6b3JjYShmaWcyLCAiM2QuZmliLmJhc2FsLmRlcm0uc20uc3ZnIix3aWR0aCA9IDcsaGVpZ2h0ID0gNSkKCmZpZzMgPC0gc2NIb2xvZ3JhcGh5OjpzY0hvbG9ncmFwaHlQbG90KHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmosY29sb3IuYnkgPSAic3BhdGlhbC5uZWlnaGJvcmhvb2QiLGNvbG9yID0gZmliLnNwLmNvbCxjZWxscyA9IHdoaWNoKHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmokc2NIb2xvZ3JhcGh5LnNjJGNlbGx0eXBlJWluJWMoIkRlcm1hbCIpKSklPiUgcGxvdGx5OjpsYXlvdXQoc2NlbmUgPSBzY2VuZSkKcGxvdGx5OjpvcmNhKGZpZzMsICIzZC5maWIuYWxvbmUuc3ZnIix3aWR0aCA9IDcsaGVpZ2h0ID0gNSkKCmZpZzQgPC0gc2NIb2xvZ3JhcGh5OjpzY0hvbG9ncmFwaHlQbG90KHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmosY29sb3IuYnkgPSAic3BhdGlhbC5uZWlnaGJvcmhvb2QiLGNvbG9yID0gZmliLnNwLmNvbCxjZWxscyA9IHdoaWNoKHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmokc2NIb2xvZ3JhcGh5LnNjJGNlbGx0eXBlJWluJWMoIkRlcm1hbCIsIkVuZG90aGVsaWFsIikpKSU+JSBwbG90bHk6OmxheW91dChzY2VuZSA9IHNjZW5lKQpwbG90bHk6Om9yY2EoZmlnNCwgIjNkLmZpYi5lbmRvLnN2ZyIsd2lkdGggPSA3LGhlaWdodCA9IDUpCgpmaWc1IDwtIHNjSG9sb2dyYXBoeTo6c2NIb2xvZ3JhcGh5UGxvdChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqLGNvbG9yLmJ5ID0gImNlbGx0eXBlIixjZWxscyA9IHdoaWNoKHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmokc2NIb2xvZ3JhcGh5LnNjJGNlbGx0eXBlJWluJWMoIkJhc2FsIiwiRGVybWFsIiwiU21vb3RoIE11c2NsZSIpKSklPiUgcGxvdGx5OjpsYXlvdXQoc2NlbmUgPSBzY2VuZSkKcGxvdGx5OjpvcmNhKGZpZzUsICIzZC5maWIuYmFzYWwuZGVybS5zbS5vZy50eXBlLnN2ZyIsd2lkdGggPSA3LGhlaWdodCA9IDUpCgoKZmlnMQpmaWcyCmZpZzMKZmlnNApmaWc1CmBgYAoKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCnRpZmYoIn4vT25lRHJpdmUgLSBOb3J0aHdlc3Rlcm4gVW5pdmVyc2l0eS9Ob3J0aHdlc3Rlcm4vWWkgTGFiL01hbnVzY3JpcHQvQ29kZV8ybmREcmFmdC9IdW1hbiBTa2luL0ZpYi5zcGF0aWFsLm5laWdoYm9yLmhlYXRtYXAudGlmZiIsIHVuaXRzPSJpbiIsIHdpZHRoPTgsIGhlaWdodD05LCByZXM9MzAwKQpEb0hlYXRtYXAoc3BhdGlhbC5uZWlnaGJvci5EZXJtYWwkYnVsay5jb3VudC5vYmosYXNzYXkgPSAiU0NUIiwgZmVhdHVyZXMgPSB0b3AxMCRnZW5lLGdyb3VwLmNvbG9ycyA9IGJyZXdlci5wYWwoNCwiR3JlZW5zIikpICsgTm9MZWdlbmQoKSt2aXJpZGlzOjpzY2FsZV9maWxsX3ZpcmlkaXMoKSt0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LGZhY2UgPSAiYm9sZCIpKQpkZXYub2ZmKCkKYGBgCgpgYGB7cn0KbGlicmFyeShSQ29sb3JCcmV3ZXIpCnNjZW5lID0gbGlzdChjYW1lcmEgPSBsaXN0KGV5ZSA9IGxpc3QoeCA9IC0xLCB6ID0gMCwgeSA9IDIpKSkKCmZpYjEgPC0gc2NIb2xvZ3JhcGh5OjpzY0hvbG9ncmFwaHlQbG90KHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmosY29sb3IuYnkgPSAic3BhdGlhbC5uZWlnaGJvcmhvb2QiLGNvbG9yID0gZmliLnNwLmNvbCxjZWxscyA9IHdoaWNoKHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmokc2NIb2xvZ3JhcGh5LnNjJGNlbGx0eXBlJWluJWMoIkJhc2FsIiwiRGVybWFsIiwiRW5kb3RoZWxpYWwiLCJTbW9vdGggTXVzY2xlIikpKSU+JSBwbG90bHk6OmxheW91dChzY2VuZSA9IHNjZW5lKQpwbG90bHk6Om9yY2EoZmliMSwgIjNkLmZpYi5zdmciLHdpZHRoID0gNyxoZWlnaHQgPSA1KQoKZmliMQpgYGAKCgoKYGBge3J9CmZpYjEyMzQgPC0gc3BhdGlhbC5uZWlnaGJvci5EZXJtYWwkcXVlcnkub25seS5vYmokc2NIb2xvZ3JhcGh5LnNjCmZpYjEyMzQkc3BhdGlhbC5uZWlnaGJvcmhvb2QgPC1wYXN0ZTAoIkRlcm1hbF8iLGZpYjEyMzQkc3BhdGlhbC5uZWlnaGJvcmhvb2QpCmZpYjEyMzQkc3BhdGlhbC5uZWlnaGJvcmhvb2QgPC0gZmFjdG9yKGZpYjEyMzQkc3BhdGlhbC5uZWlnaGJvcmhvb2QgLGxldmVscyA9IHNvcnQodW5pcXVlKGZpYjEyMzQkc3BhdGlhbC5uZWlnaGJvcmhvb2QgKSkpCmZpYjEyMzQgPC0gU2V0SWRlbnQoZmliMTIzNCx2YWx1ZSA9InNwYXRpYWwubmVpZ2hib3Job29kIikKCnRpZmYoIn4vT25lRHJpdmUgLSBOb3J0aHdlc3Rlcm4gVW5pdmVyc2l0eS9Ob3J0aHdlc3Rlcm4vWWkgTGFiL01hbnVzY3JpcHQvQ29kZV8ybmREcmFmdC9IdW1hbiBTa2luL0ZpYi5wZXJpLnZsbi5tYXJrLnBsb3QudGlmZiIsIHVuaXRzPSJpbiIsIHdpZHRoPTUsIGhlaWdodD01LCByZXM9MzAwKQpWbG5QbG90KGZpYjEyMzQsYygiUkdTNSIsIk5PVENIMyIsIk1ZSDExIiwiQUNUQTIiKSxhc3NheSA9ICJTQ1QiLG5jb2wgPSAyLGNvbHMgPSAoYnJld2VyLnBhbCg0LCJHcmVlbnMiKSkpCmRldi5vZmYoKQoKdGlmZigifi9PbmVEcml2ZSAtIE5vcnRod2VzdGVybiBVbml2ZXJzaXR5L05vcnRod2VzdGVybi9ZaSBMYWIvTWFudXNjcmlwdC9Db2RlXzJuZERyYWZ0L0h1bWFuIFNraW4vRmliLjEyMzQuY29sLnZsbi5tYXJrLnBsb3QudGlmZiIsIHVuaXRzPSJpbiIsIHdpZHRoPTUsIGhlaWdodD0yLjUsIHJlcz0zMDApClZsblBsb3QoZmliMTIzNCxjKCJDT0wxQTIiLCJEQ04iKSxhc3NheSA9ICJTQ1QiLG5jb2wgPSAyLGNvbHMgPSAoYnJld2VyLnBhbCg0LCJHcmVlbnMiKSkpCmRldi5vZmYoKQoKYGBgCmBgYHtyfQp0aWZmKCJ+L09uZURyaXZlIC0gTm9ydGh3ZXN0ZXJuIFVuaXZlcnNpdHkvTm9ydGh3ZXN0ZXJuL1lpIExhYi9NYW51c2NyaXB0L0NvZGVfMm5kRHJhZnQvSHVtYW4gU2tpbi9GaWIuMTIzNC5mb3VyLnN0YWNrLnZsbi5tYXJrLnBsb3QudGlmZiIsIHVuaXRzPSJpbiIsIHdpZHRoPTUsIGhlaWdodD02LCByZXM9NjAwKQpWbG5QbG90KGZpYjEyMzQsYygiQVBDREQxIiwiVFdJU1QyIiwiQURIMUIiLCJHUkVNMSIsIkFCQ0E4IiwiSUdGMSIsIlJHUzUiLCJOT1RDSDMiKSxhc3NheSA9ICJTQ1QiLHN0YWNrID0gVCxmbGlwID0gVCkrTm9MZWdlbmQoKSt0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LGZhY2UgPSAiYm9sZCIpLGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSxheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LGZhY2UgPSAiYm9sZCIpICxheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDMwLGhqdXN0PTEpKStzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjRURGOEU5IiwiI0VERjhFOSIsICIjQkFFNEIzIiAsIiNCQUU0QjMiICwiIzc0QzQ3NiIsIiM3NEM0NzYiLCAiIzIzOEI0NSIsICIjMjM4QjQ1IikpCmRldi5vZmYoKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KGdncHVicikKbXlfY29tcGFyaXNvbnMgPC0gbGlzdCggYygiRGVybWFsXzEiLCAiRGVybWFsXzIiKSwgYygiRGVybWFsXzIiLCAiRGVybWFsXzMiKSwgYygiRGVybWFsXzMiLCAiRGVybWFsXzQiKSApCgp0aWZmKCJ+L09uZURyaXZlIC0gTm9ydGh3ZXN0ZXJuIFVuaXZlcnNpdHkvTm9ydGh3ZXN0ZXJuL1lpIExhYi9NYW51c2NyaXB0L0NvZGVfM3JkRHJhZnQvL2NsdXN0ZXJEaXN0LkZpYjEuMi4zLjQudG8uNF9yZXYudGlmZiIsIHVuaXRzPSJpbiIsIHdpZHRoPTUsIGhlaWdodD01LCByZXM9NjAwKQpzY0hvbG9ncmFwaHk6OmNsdXN0ZXJEaXN0YW5jZUJveHBsb3Qoc3BhdGlhbC5uZWlnaGJvci5EZXJtYWwkc2NIb2xvZ3JhcGh5Lm9iaixhbm5vdGF0aW9uVG9Vc2UgPSAic3BhdGlhbC5uZWlnaGJvcmhvb2QiLHF1ZXJ5LmNsdXN0ZXIubGlzdCA9IChwYXN0ZTAoIkRlcm1hbF8iLGMoMTo0KSkpLHJlZmVyZW5jZS5jbHVzdGVyID0gYygiRGVybWFsXzQiKSkrZ2dwbG90Mjo6c2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gKGJyZXdlci5wYWwoNCwiR3JlZW5zIikpWzE6NF0pKyAKICBnZW9tX3NpZ25pZihjb21wYXJpc29ucyA9IG15X2NvbXBhcmlzb25zLHRlc3QuYXJncyA9IGxpc3Qoc2l6ZT01KSxtYXBfc2lnbmlmX2xldmVsID0gVFJVRSkrTm9MZWdlbmQoKSt0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LGZhY2UgPSAiYm9sZCIpLGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSxheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwLGZhY2UgPSAiYm9sZCIpICxheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LGhqdXN0PTEpKSt5bGFiKCJTTU4gRGlzdGFuY2UiKQpkZXYub2ZmKCkKCgpgYGAKCmBgYHtyfQpkeW4uZmliIDwtZmluZEdlbmVTcGF0aWFsRHluYW1pY3Moc3BhdGlhbC5uZWlnaGJvci5EZXJtYWwkc2NIb2xvZ3JhcGh5Lm9iaixxdWVyeS5jbHVzdGVyID0gcGFzdGUwKCJEZXJtYWxfIixjKDE6MykpLHJlZi5jbHVzdGVyID0gYygiU21vb3RoIE11c2NsZSIpLGFubm90YXRpb25Ub1VzZSA9ICJzcGF0aWFsLm5laWdoYm9yaG9vZCIsYXNzYXlUb1VzZSA9ICJTQ1QiKQpzcGF0aWFsRHluYW1pY3NGZWF0dXJlUGxvdChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqLHF1ZXJ5LmNsdXN0ZXIgPSBwYXN0ZTAoIkRlcm1hbF8iLGMoMTozKSkscmVmLmNsdXN0ZXIgPSBjKCJTbW9vdGggTXVzY2xlIiksYW5ub3RhdGlvblRvVXNlID0gInNwYXRpYWwubmVpZ2hib3Job29kIixnZW5lT0kgPSBjKGhlYWQoZHluLmZpYikkZ2VuZSx0YWlsKGR5bi5maWIpJGdlbmUpLGFzc2F5VG9Vc2UgPSAiU0NUIikKYGBgCgpgYGB7cn0KCnRpZmYoIn4vT25lRHJpdmUgLSBOb3J0aHdlc3Rlcm4gVW5pdmVyc2l0eS9Ob3J0aHdlc3Rlcm4vWWkgTGFiL01hbnVzY3JpcHQvQ29kZV8ybmREcmFmdC9IdW1hbiBTa2luL0ZpYi5zcGF0aWFsLm5laWdoYm9yLjEtNC5keW4uaGVhdC50aWZmIiwgdW5pdHM9ImluIiwgd2lkdGg9MTIsIGhlaWdodD04LCByZXM9MzAwKQpzcGF0aWFsRHluYW1pY3NGZWF0dXJlUGxvdChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqLHF1ZXJ5LmNsdXN0ZXI9cGFzdGUwKCJEZXJtYWxfIiwxOjQpLHJlZi5jbHVzdGVyID0gYygiRGVybWFsXzQiKSxhbm5vdGF0aW9uVG9Vc2UgPSAic3BhdGlhbC5uZWlnaGJvcmhvb2QiLGdlbmVPSSA9IGMoIkFQQ0REMSIsIlRXSVNUMiIsIldOVDVBIiwiUE9TVE4iLCJTRlJQMiIsIkdSRU0xIiwiQURIMUIiLCJJR0YxIiwiQUJDQTgiLCJDWENMMTIiLCJNRkFQNSIsIlJHUzUiLCJOT1RDSDMiLCJBQ1RBMiIsIk1ZSDExIiksYXNzYXlUb1VzZSA9ICJTQ1QiLHNlbGYuY29sb3IgPSBjKChjb2xvclJhbXBQYWxldHRlKGJyZXdlci5wYWwoMTIsIlBhaXJlZCIpKSgxMClbMV0pLChicmV3ZXIucGFsKDQsIkdyZWVucyIpKSwoY29sb3JSYW1wUGFsZXR0ZShicmV3ZXIucGFsKDEyLCJQYWlyZWQiKSkoMTApWzM6MTBdKSkpCmRldi5vZmYoKQpgYGAKCgpgYGB7cn0KdGlmZigifi9PbmVEcml2ZSAtIE5vcnRod2VzdGVybiBVbml2ZXJzaXR5L05vcnRod2VzdGVybi9ZaSBMYWIvTWFudXNjcmlwdC9Db2RlXzJuZERyYWZ0L0h1bWFuIFNraW4vRmliLnNwYXRpYWwubmVpZ2hib3IuZGlzdGFsLmNvbDZhNS50aWZmIiwgdW5pdHM9ImluIiwgd2lkdGg9NSwgaGVpZ2h0PTQsIHJlcz0zMDApCmV4cHJlc3Npb25CeURpc3RQbG90KHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmoscXVlcnkuY2x1c3Rlcj1wYXN0ZTAoIkRlcm1hbF8iLDE6MykscmVmLmNsdXN0ZXIgPSBjKCJTbW9vdGggTXVzY2xlIiksYW5ub3RhdGlvblRvVXNlID0gInNwYXRpYWwubmVpZ2hib3Job29kIixnZW5lT0kgPSAiQ09MNkE1Iixhc3NheVRvVXNlID0gIlNDVCIpCmRldi5vZmYoKQoKdGlmZigifi9PbmVEcml2ZSAtIE5vcnRod2VzdGVybiBVbml2ZXJzaXR5L05vcnRod2VzdGVybi9ZaSBMYWIvTWFudXNjcmlwdC9Db2RlXzJuZERyYWZ0L0h1bWFuIFNraW4vRmliLnNwYXRpYWwubmVpZ2hib3IucHJveGltYWwubWZhcDUudGlmZiIsIHVuaXRzPSJpbiIsIHdpZHRoPTUsIGhlaWdodD00LCByZXM9MzAwKQpleHByZXNzaW9uQnlEaXN0UGxvdChzcGF0aWFsLm5laWdoYm9yLkRlcm1hbCRzY0hvbG9ncmFwaHkub2JqLHF1ZXJ5LmNsdXN0ZXI9cGFzdGUwKCJEZXJtYWxfIiwxOjMpLHJlZi5jbHVzdGVyID0gYygiU21vb3RoIE11c2NsZSIpLGFubm90YXRpb25Ub1VzZSA9ICJzcGF0aWFsLm5laWdoYm9yaG9vZCIsZ2VuZU9JID0gIk1GQVA1Iixhc3NheVRvVXNlID0gIlNDVCIpCmRldi5vZmYoKQpgYGAKCmBgYHtyfQpmaWIuc3ViIDwtIHNwYXRpYWwubmVpZ2hib3IuRGVybWFsJHNjSG9sb2dyYXBoeS5vYmokc2NIb2xvZ3JhcGh5LnNjCgp0aWZmKCJ+L09uZURyaXZlIC0gTm9ydGh3ZXN0ZXJuIFVuaXZlcnNpdHkvTm9ydGh3ZXN0ZXJuL1lpIExhYi9NYW51c2NyaXB0L0NvZGVfMm5kRHJhZnQvSHVtYW4gU2tpbi8vZGVybWFsLnNwYXRpYWwuY2x1c3Rlci50aWZmIiwgdW5pdHM9ImluIiwgd2lkdGg9NCwgaGVpZ2h0PTQsIHJlcz0zMDApCkRpbVBsb3QoZmliLnN1Yixncm91cC5ieSA9ICJzcGF0aWFsLm5laWdoYm9yaG9vZCIscmVkdWN0aW9uID0gImluZC51bWFwIixjZWxscyA9IHdoaWNoKGZpYi5zdWIkY2VsbHR5cGUlaW4lIkRlcm1hbCIpKStnZ3RpdGxlKCJTcGF0aWFsIE5laWdoYm9yaG9vZHMiKStzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGJyZXdlci5wYWwoNCwiR3JlZW5zIikpK05vTGVnZW5kKCkKZGV2Lm9mZigpCgp0aWZmKCJ+L09uZURyaXZlIC0gTm9ydGh3ZXN0ZXJuIFVuaXZlcnNpdHkvTm9ydGh3ZXN0ZXJuL1lpIExhYi9NYW51c2NyaXB0L0NvZGVfMm5kRHJhZnQvSHVtYW4gU2tpbi8vZGVybWFsLnNldXJhdC5jbHVzdGVyLnRpZmYiLCB1bml0cz0iaW4iLCB3aWR0aD00LCBoZWlnaHQ9NCwgcmVzPTMwMCkKRGltUGxvdChmaWIuc3ViLGdyb3VwLmJ5ID0gIm9yaWcuY2x1c3RlciIscmVkdWN0aW9uID0gImluZC51bWFwIixjZWxscyA9IHdoaWNoKGZpYi5zdWIkY2VsbHR5cGUlaW4lIkRlcm1hbCIpKStnZ3RpdGxlKCJTZXVyYXQgQ2x1c3RlciIpK3NjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKStOb0xlZ2VuZCgpCmRldi5vZmYoKQpgYGAKCg==